package guestbook.controlador;

import guestbook.persistencia.Saludo;
import guestbook.persistencia.Usuario;
import guestbook.service.SaludoService;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class GuestbookController {

    private SaludoService greetingsService;
    private UserController userController;

    @Autowired
    @Required
    public void setGreetingsService(
            SaludoService greetingsService) {
        this.greetingsService = greetingsService;
    }

    @Autowired
    @Required
    public void setUserController(UserController userController) {
        this.userController = userController;
    }



    
    @RequestMapping(value = "/guestbook_ver_mensajes", method = RequestMethod.GET)
    public String doShowGuestbook(@RequestParam(value="pagina", required=false,defaultValue="1") Integer pagina, Model model) {

        System.out.println("AQUI");

        int numeroMensajes = greetingsService.countAllsaludos();



        final int TAMANO_PAGINA = 5;
        Collection<Integer> numerosPaginas = new ArrayList<Integer>();
        Integer numeroPaginas = 1 + (numeroMensajes - 1) / TAMANO_PAGINA;
        for (Integer i = new Integer(1); i <= numeroPaginas; i++) {
            numerosPaginas.add(i);
        }

        model.addAttribute("numerosPaginas", numerosPaginas);


        model.addAttribute("numeroMensajes", numeroMensajes);



        final Collection<Saludo> greetings = greetingsService.getPaginaSaludos((pagina - 1) * TAMANO_PAGINA, TAMANO_PAGINA);

        model.addAttribute("greetings", greetings);


        return "/guestbook_ver_mensajes.jsp?pagina=" + pagina;

    }

    @RequestMapping(value = "/guestbook_crear_mensaje", method = RequestMethod.POST)
    public String doCrearMensaje(@RequestParam("content") String content, Model model) {
        //System.out.println("AQUI 1 GuestbookController doCrearMensaje userController.getUser()="+userController.getUser());
        final Usuario user = userController.getUser();
        //System.out.println("AQUI 2 GuestbookController doCrearMensaje");
        final Date date = new Date();
        //System.out.println("AQUI 3 GuestbookController doCrearMensaje");
        final Saludo greeting = new Saludo(user, content, date);
        //System.out.println("AQUI 4 GuestbookController doCrearMensaje");
        greetingsService.create(greeting);
        //System.out.println("AQUI 5 GuestbookController doCrearMensaje greeting.id="+greeting.getId());
        return "redirect:guestbook_ver_mensajes?pagina=1";

    }

    @RequestMapping(value = "/guestbook_borrar_mensaje", method = RequestMethod.POST)
    public String doBorrarMensaje(@RequestParam("idMensaje") Long idMensaje, Model model) {
        greetingsService.borrar(idMensaje);
        return "redirect:guestbook_ver_mensajes?pagina=1";

    }

    @RequestMapping(value = "/userSecured/mis_mensajes", method = RequestMethod.GET)
    public String getMensajesUsuario(@RequestParam(value="usuario", required=true) String author, Model model) {
        model.addAttribute("mensajes", greetingsService.getMensajes(author));
        return "/guestbook_ver_mensajes_usuario";
    }

}
